인텔 8080
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
인텔 8080은 1974년 인텔에서 출시한 8비트 마이크로프로세서이다. 8008의 단점을 개선하여 설계되었으며, 40핀 DIP 패키지, 8비트 데이터 버스, 16비트 주소 버스를 지원하여 64KB의 메모리를 사용할 수 있었다. 8080은 MITS 알테어 8800을 비롯한 초기 개인용 컴퓨터에 널리 사용되었으며, CP/M 운영 체제의 기반이 되었다. 8080의 명령어 집합은 Zilog Z80과 호환되었고, 이후 인텔의 x86 아키텍처에도 영향을 미쳤다.
더 읽어볼만한 페이지
- 8비트 마이크로프로세서 - 인텔 8008
인텔 8008은 1972년 인텔이 출시한 8비트 마이크로프로세서로, 데이터포인트 3300 터미널용으로 구상되었으나 인텔이 지적 재산을 인수하여 상업적 성공을 거두며 인텔 8080과 x86 제품군의 발판이 되고 최초의 상업용 개인용 컴퓨터에 사용되었다. - 8비트 마이크로프로세서 - WDC 65C02
WDC 65C02는 6502의 저전력 CMOS 버전으로, 버그 수정, 명령어 추가, 성능 개선이 이루어진 8비트 마이크로프로세서이다. - 인텔의 마이크로프로세서 - 인텔 80386
인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다. - 인텔의 마이크로프로세서 - 인텔 4004
인텔 4004는 1971년 인텔에서 출시된 세계 최초의 상용 마이크로프로세서 중 하나이며, 4비트 아키텍처를 기반으로 계산기 라인에 탑재하기 위해 개발되었고, 컴퓨터 소형화와 개인용 컴퓨터 시대에 기여했다. - 인텔 x86 마이크로프로세서 - 인텔 80386
인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다. - 인텔 x86 마이크로프로세서 - 인텔 4004
인텔 4004는 1971년 인텔에서 출시된 세계 최초의 상용 마이크로프로세서 중 하나이며, 4비트 아키텍처를 기반으로 계산기 라인에 탑재하기 위해 개발되었고, 컴퓨터 소형화와 개인용 컴퓨터 시대에 기여했다.
인텔 8080 | |
---|---|
기본 정보 | |
![]() | |
이름 | 인텔 8080 |
제조 시작일 | 1974년 4월 |
제조 종료일 | 1990년 |
최저 클럭 속도 | 2 MHz |
최고 클럭 속도 | 3.125 MHz |
제조사 | 인텔 |
설계 회사 | 인텔 |
판매 회사 | 인텔 |
패키지 | 40핀 DIP |
코어 수 | 1 |
트랜지스터 수 | 4,500 또는 6,000 |
명령 세트 | 8080 |
최소 공정 규칙 | 6 µm |
이전 세대 프로세서 | 인텔 8008 |
다음 세대 프로세서 | 인텔 8085 |
아키텍처 | 8080 |
데이터 너비 | 8비트 |
주소 너비 | 16비트 |
지원 상태 | 지원 중단 |
기술 정보 |
2. 역사
8008의 한계를 극복하고 더 많은 고객을 위한 범용 마이크로프로세서를 목표로 8080이 개발되었다. 8080은 8008과의 소스 코드 호환성을 유지하면서도, 스택을 외부 메모리로 이동하여 기능을 확장했다.
8080 개발은 페데리코 파긴(Federico Faggin)의 주도로 1971년 여름에 구상이 시작되었고, 1972년 가을에 마사토시 시마(Masatoshi Shima)가 합류하여 설계를 진행했다. 1973년 8월 레이아웃이 완료되고, 1974년 1월 프로토타입이 완성되었다. 초기에는 접지 문제로 인해 표준 TTL과의 호환성에 문제가 있었으나, 곧 개선된 8080A가 출시되었다.
일본에서 1974년 4월경에 출시된 8080의 초기 샘플 가격은 개당 138,000엔(138000JPY)으로, 당시 일본 가구 월평균 소비 지출액을 상회하는 고가였다.[44] 이후 가격은 점차 하락했으며, 1975년 말에는 관련 부품을 포함한 키트 형태로도 판매되었다.[45]
2. 1. 개발 배경
마이크로프로세서 고객들은 8008의 단일 주소 지정 모드, 낮은 클럭 속도, 적은 핀 수, 작은 온칩 스택 등의 한계로 인해 소프트웨어 규모와 복잡성이 제한되어 8008 채택을 꺼렸다. 8080 설계에는 8008에 스택 명령어를 추가하는 것부터 이전 모든 인텔 아키텍처에서 완전히 벗어나는 것까지 여러 제안이 있었으나, 최종 설계는 이러한 제안들 사이의 절충안이었다.[11]8080의 구상은 인텔이 4004 개발을 마무리하고 8008을 개발 중이던 1971년 여름에 시작되었다. 인텔은 "칩 위의 CPU"에 대한 소문 이후, 다양한 고객들로부터 마이크로프로세서에 대한 관심을 받기 시작했다. 페데리코 파긴(Federico Faggin)은 4004 설계를 이끌었고 8080의 주요 설계자가 되었는데, 그는 기술 세미나를 진행하고 고객들을 방문하면서 고객들이 마이크로프로세서, 특히 8008의 아키텍처와 성능에 대해 불평하고 있으며, 0.5MHz의 속도는 "적절하지 않다"는 것을 알게 되었다.[11]
파긴은 인텔 경영진에게 칩을 제안하고 1972년 봄 8008 개발이 마무리될 무렵 구현을 추진했지만, 인텔은 이 프로젝트를 승인하지 않았다. 인텔은 4004와 8008에 대한 시장 반응을 먼저 보고 싶어했고, 최신 세대 메모리 칩 출시에 어려움을 겪고 있어 그쪽에 집중하기를 원했기 때문이다. 결국 인텔은 그해 가을까지 프로젝트를 승인하지 않았다.[11] 파긴은 1972년 11월 마사토시 시마(Masatoshi Shima)를 일본에서 고용하여 4004의 논리 설계를 함께 했다. 시마는 파긴의 지시 아래 상세 설계를 수행했고,[12] 파긴이 4000 계열과 8008을 위해 만든 실리콘 게이트를 사용한 랜덤 로직 설계 방법론을 사용했다.
8080은 더 많은 고객을 위한 범용 마이크로프로세서로 명시적으로 설계되었다. 개발 노력의 상당 부분은 8008의 보조 칩 기능을 하나의 패키지에 통합하려는 데 사용되었다. 개발 초기에 8080이 8008과 바이너리 호환되지 않도록 결정되었고, 대신 트랜스파일러를 거친 후 소스 호환성을 선택하여 새로운 소프트웨어가 8008과 같은 제약을 받지 않도록 했다. 같은 이유로, 그리고 스택 기반 루틴과 인터럽트의 기능을 확장하기 위해 스택은 외부 메모리로 이동되었다.
메인프레임 시스템에서 프로그래머가 범용 레지스터를 특수하게 사용하는 것을 주목하여, 파긴은 시마와 스탠리 메이저(Stanley Mazor)와 함께 8080의 레지스터가 특수화되도록 결정했고, 레지스터 쌍은 서로 다른 용도를 갖도록 했다.[13]
시마는 1973년 8월에 레이아웃을 완료했다. 칩 생산은 그해 12월에 시작되었다.[11] NMOS 논리 제작의 개발 후, 8080의 프로토타입이 1974년 1월에 완료되었다. 그런데 표준 TTL 장치로 구동할 때 높은 전류가 좁은 라인으로 흘러 접지 전압이 증가하는 결함이 있었다. 인텔은 시마가 프로토타입을 특성화하기 전에 영업 부서의 지시에 따라 8080을 4만 개나 생산했다. 몇 가지 일반적인 마지막 순간 문제를 해결한 후, 인텔은 1974년 3월에 제품을 출시했다.[11] 한 달 후 저전력 쇼트키 TTL (LS TTL) 장치가 필요하다는 사실이 발표되었다. 8080A는 이 결함을 수정했다.[14]
인텔은 컴파일된 PL/M 프로그램을 실행하기 위한 INTERP/80이라는 명령어 세트 시뮬레이터를 제공했다. 개리 킬달(Gary Kildall)이 FORTRAN IV로 작성했다.[15][16]
8080에 대한 특허는 페데리코 파긴(Federico Faggin), 마사토시 시마(Masatoshi Shima), 스탠리 메이저(Stanley Mazor)의 이름으로 단 하나만 존재한다.
1974년 4월경 일본에서 출시된 8080의 샘플 가격은 개당 138,000엔이었다.[44]
2. 2. 개발 과정
8008 마이크로프로세서는 단일 주소 지정 모드, 낮은 클럭 속도, 적은 핀 수, 작은 온칩 스택 등의 한계로 인해 소프트웨어 규모와 복잡성이 제한되어 고객들이 채택을 꺼렸다. 이러한 한계를 극복하기 위해 8008에 스택 명령어를 추가하는 것부터 이전 인텔 아키텍처와 완전히 다른 설계를 하는 것까지 다양한 제안이 있었고, 최종 설계는 이러한 제안들 사이의 절충안이었다.[11]8080의 구상은 인텔이 4004 개발을 마무리하고 8008을 개발 중이던 1971년 여름에 시작되었다. 페데리코 파긴(Federico Faggin)은 4004 설계를 이끌었고 8080의 주요 설계자가 되었는데, 그는 고객들이 8008의 아키텍처와 성능, 특히 0.5MHz의 속도에 대해 불평하고 있음을 알게 되었다.[11]
파긴은 1972년 봄 인텔 경영진에게 8080 칩을 제안하고 구현을 추진했지만, 인텔은 시장 반응을 지켜보고 메모리 칩 출시에 집중하기 위해 그해 가을까지 프로젝트를 승인하지 않았다.[11] 파긴은 1972년 11월 마사토시 시마(Masatoshi Shima)를 고용하여 4004의 논리 설계를 함께 했다. 시마는 파긴의 지시 아래 상세 설계를 수행했고, 파긴이 4000 계열과 8008을 위해 만든 실리콘 게이트를 사용한 랜덤 로직 설계 방법론을 사용했다.[12]
8080은 더 많은 고객을 위한 범용 마이크로프로세서로 설계되었다. 개발 노력의 상당 부분은 8008의 보조 칩 기능을 하나의 패키지에 통합하려는 데 사용되었다. 개발 초기에 8080이 8008과 바이너리 호환되지 않도록 결정되었고, 대신 트랜스파일러를 거친 후 소스 호환성을 선택하여 새로운 소프트웨어가 8008과 같은 제약을 받지 않도록 했다. 스택 기반 루틴과 인터럽트의 기능을 확장하기 위해 스택은 외부 메모리로 이동되었다.
메인프레임 시스템에서 프로그래머가 범용 레지스터를 특수하게 사용하는 것을 참고하여, 파긴은 시마와 스탠리 메이저(Stanley Mazor)와 함께 8080의 레지스터가 특수화되도록 결정했고, 레지스터 쌍은 서로 다른 용도를 갖도록 했다.[13]
시마는 1973년 8월에 레이아웃을 완료했고, 1974년 1월에 8080의 프로토타입이 완료되었다. 그러나 표준 TTL 장치로 구동할 때 높은 전류가 좁은 라인으로 흘러 접지 전압이 증가하는 결함이 있었다. 인텔은 시마가 프로토타입을 특성화하기 전에 영업 부서의 지시에 따라 8080을 4만 개나 생산했다. 몇 가지 문제를 해결한 후, 인텔은 1974년 3월에 제품을 출시했다.[11] 한 달 후 저전력 쇼트키 TTL (LS TTL) 장치가 필요하다는 사실이 발표되었고, 8080A는 이 결함을 수정했다.[14]
인텔은 컴파일된 PL/M 프로그램을 실행하기 위한 INTERP/80이라는 명령어 세트 시뮬레이터를 제공했다. 개리 킬달(Gary Kildall)이 FORTRAN IV로 작성했다.[15][16]
8080에 대한 특허는 페데리코 파긴, 마사토시 시마, 스탠리 메이저의 이름으로 단 하나만 존재한다.
일본에서 1974년 4월경에 출시된 8080의 샘플 가격은 개당 138,000엔(138000JPY)이었다. 이는 당시 일본의 전체 가구 월평균 가계 소비 지출액을 약간 상회하는 금액이었다.[44] 1975년 말에는 주변 회로로 필요한 전자 부품을 갖춘 키트 "MCS-80 시스템 C"(약 63,000엔)와 기판과 모니터 프로그램까지 일체로 갖춘 조립 키트(약 13만 엔)가 출시되었다.[45]
3. 기술적 특징
인텔 8080은 이전 모델인 8008과 동일한 기본 명령어 집합을 사용했지만, 몇 가지 새로운 명령어가 추가되었다. 8008용으로 작성된 프로그램은 8080에서 수정 없이 실행될 수 있었다. 8080은 40핀 DIP 패키지로 제공되었으며, 8비트 데이터 버스와 16비트 주소 버스를 사용하여 64KB의 메모리에 접근할 수 있었다.
8080은 세 개의 전원(-5V, +5V, +12V)과 두 개의 비중첩 고진폭 동기 신호가 필요했지만, 후기 소련 버전(КР580ВМ80А)은 단일 +5V 전원으로 작동 가능했다. (+12V 핀은 +5V에, -5V 핀은 접지에 연결)
주소 버스는 16개의 핀을 가지고 있었고, 데이터 버스는 멀티플렉싱 없이 8개의 핀을 사용할 수 있었다. 읽기 및 쓰기 신호를 위한 두 개의 추가 핀을 사용하여 간단한 마이크로프로세서 장치를 쉽게 조립할 수 있었다. 별도의 입출력 공간, 인터럽트 및 DMA는 프로세서 핀 신호를 디코딩하는 추가 칩이 필요했지만, 핀 부하 용량이 제한적이어서 간단한 컴퓨터조차도 버스 증폭기가 필요한 경우가 많았다.
칩의 핀 배열은 다음과 같다.
핀 번호 | 신호 | 유형 | 설명 |
---|---|---|---|
1 | A10 | 출력 | 주소 버스 10 |
2 | GND | — | 접지 |
3 | D4 | 양방향 | 양방향 데이터 버스. 프로세서는 "프로세서 상태" 정보를 제공하기 위해 일시적으로 사용하기도 한다. |
4 | D5 | ||
5 | D6 | ||
6 | D7 | ||
7 | D3 | ||
8 | D2 | ||
9 | D1 | ||
10 | D0 | ||
11 | −5 V | — | −5V 전원. 프로세서 손상을 막기 위해 가장 먼저 연결하고 가장 나중에 분리해야 한다. |
12 | RESET | 입력 | 리셋. 액티브 로우 신호로, 주소 0000에 있는 명령어를 실행한다. 다른 레지스터는 수정되지 않는다. |
13 | HOLD | 입력 | 직접 메모리 액세스 요청. 데이터 및 주소 버스를 고임피던스 상태로 전환한다. |
14 | INT | 입력 | 인터럽트 요청 |
15 | φ2 | 입력 | 클럭 발생기 신호의 두 번째 위상 |
16 | INTE | 출력 | 인터럽트 제어에 사용. 간단한 컴퓨터에서는 단일 비트 출력 포트로 사용되기도 한다. |
17 | DBIN | 출력 | 읽기 (메모리 또는 입력 포트에서 읽음) |
18 | WR | 출력 | 쓰기 (메모리 또는 출력 포트에 씀). 액티브 로우 출력. |
19 | SYNC | 출력 | 프로세서가 데이터 버스에 "상태 단어"를 넣었음을 나타낸다. 추가 정보를 제공하며, 외부 레지스터에 쓰는 데 사용된다. |
20 | +5 V | — | +5V 전원 |
21 | HLDA | 출력 | 직접 메모리 액세스 확인. 데이터 및 주소 핀을 고임피던스 상태로 전환한다. |
22 | φ1 | 입력 | 클럭 발생기 신호의 첫 번째 위상 |
23 | READY | 입력 | 대기. 프로세서 작업을 일시 중지하거나 하드웨어 기반 단계별 디버깅 모드를 지원한다. |
24 | WAIT | 출력 | 대기 (프로세서가 대기 상태임을 나타냄) |
25 | A0 | 출력 | 주소 버스 |
26 | A1 | ||
27 | A2 | ||
28 | 12 V | — | +12V 전원. 가장 나중에 연결하고 가장 먼저 분리해야 한다. |
29 | A3 | 출력 | 주소 버스; 필요에 따라 고임피던스 상태로 전환할 수 있음 |
30 | A4 | ||
31 | A5 | ||
32 | A6 | ||
33 | A7 | ||
34 | A8 | ||
35 | A9 | ||
36 | A15 | ||
37 | A12 | ||
38 | A13 | ||
39 | A14 | ||
40 | A11 |
8080은 전용 입출력 명령어를 사용하여 최대 256개의 입출력(I/O) 포트를 지원했다.[19] 입출력 매핑 방식은 프로세서의 제한된 주소 공간을 확보하는 장점이 있었다.[20]
많은 CPU 아키텍처는 메모리 매핑 입출력(MMIO)을 사용하여 RAM과 주변 장치에 공통 주소 공간을 사용한다. 이는 전용 입출력 명령어가 필요 없지만, 주변 장치가 느린 경우 대기 상태를 위한 특수 하드웨어가 필요할 수 있다. 일부 8080 컴퓨터는 입출력을 메모리 셀처럼 "메모리 매핑"하여 입출력 명령어를 사용하지 않기도 했다. 입출력 주소 지정은 프로세서가 동일한 8비트 포트 주소를 하위 및 상위 주소 바이트에 출력하는 방식을 활용하기도 했다. (예: `IN 05h`는 16비트 주소 버스에 0505h 주소를 놓는다).
8080의 입출력 명령어는 다음과 같다.
- `IN n` / `IN A,(n)`: I/O 주소에서 A 레지스터로 입력한다.
- `OUT n` / `OUT (n),A`: A 레지스터의 내용을 I/O 주소로 출력한다.
8080 프로세서는 연산 결과 등을 나타내는 내부 플래그(상태 레지스터)를 유지하며, 특정 명령어만 플래그에 영향을 준다.
- 부호 (S): 결과가 음수이면 설정된다.
- 영 (Z): 결과가 0이면 설정된다.
- 패리티 (P): 결과에서 1 비트의 개수가 짝수이면 설정된다.
- 캐리 (C): 덧셈에서 자리올림, 뺄셈에서 자리빌림 발생 시 설정.
- 보조 캐리 (AC 또는 H): 2진 부호화 10진수(BCD) 연산에 사용.
캐리 비트는 특정 명령어로 설정/보완 가능하며, 조건 분기 명령어는 플래그 상태를 검사한다. 누산기와 플래그는 PSW (Program Status Word)라 불리며, 스택에 푸시/팝 가능하다.
프로세서 상태 단어의 한 비트는 스택 접근을 나타내지만, 별도 스택 메모리 구현은 거의 사용되지 않았다.
; STC / SCF
: 캐리 플래그(C 플래그)를 1로 설정한다.
; CMC / CCF
: 캐리 플래그(C 플래그)를 반전한다.
3. 1. 아키텍처
'''8080'''은 8008과 같은 명령어 집합을 사용하였다. 8008에서 쓰던 프로그램은 8080과 호환되었기 때문에 8080에서 그대로 사용할 수 있었으나, 8080에서는 일부 새로운 명령문을 사용할 수 있었다. 8080은 외형상으로 40핀을 가진 DIP였으며 8비트의 자료 버스, 16비트의 주소 버스에 접근할 수 있었다. 이 덕분에 8080은 64KB의 메모리를 다룰 수 있었다.8080에는 7개의 8비트 레지스터가 있었는데(A, B, C, D, E, H, L) 이들 중 A는 단독으로 8비트로만 쓰였으나 나머지는 일부 명령어에서 BC, DE, HL과 같이 16비트로 쓰일 수도 있었다. 이는 대개 주소를 저장하는 데에 쓰였다. 8080에서도 다수의 8비트 프로세서와 같이, 명령어가 1바이트 이내로 표시될 수 있다. 명령어에 부가된 처리값, 메모리 주소 포트 번호 등은 별도로 1~2바이트의 데이터를 이용할 수도 있다.
8080은 1개의 누산기를 포함하여 7개의 범용 레지스터(8비트)를 갖는다. 또한, 두 개의 8비트 레지스터를 조합하여 BC, DE, HL의 3개의 16비트 레지스터로 취급하는 명령어도 있다.
16비트 단위 호칭 | 8비트 단위(상위) | 8비트 단위(하위) | 설명 |
---|---|---|---|
PSW | A | Flag | 누산기(A)와 플래그 레지스터 |
BC | B | C | 범용 레지스터 |
DE | D | E | 범용 레지스터 |
HL | H | L | 범용 레지스터 및 간접 참조용 레지스터 |
PC | colspan="2" | | 프로그램 카운터 | |
SP | colspan="2" | | 스택 포인터 |
명령어 중에서는 HL 레지스터 쌍을 포인터로 취급하는 메모리 참조를 "M"으로 표현한다. (예: ADD M)
플래그 레지스터의 비트 위치는 다음과 같다.
- b7:S 부호
- b6:Z 영(0)
- b5:미사용 (0으로 고정)
- b4:H 보조 캐리(팩 BCD 연산용)
- b3:미사용 (0으로 고정)
- b2:P 패리티
- b1:미사용 (0으로 고정)
- b0:C 캐리
이 플래그 위치는 8086을 거쳐 IA-32에 이르기까지 계승되고 있다.
3. 2. 명령어 집합
'''8080'''은 8008과 같은 명령어 집합을 사용하여, 8008용 프로그램은 8080과 호환되어 그대로 사용할 수 있었다. 그러나 8080은 일부 새로운 명령어를 추가로 지원했다. 8080은 40핀 DIP 외형으로, 8비트 데이터 버스와 16비트 주소 버스를 통해 64KB 메모리를 다룰 수 있었다. 8080은 7개의 8비트 레지스터(A, B, C, D, E, H, L)를 가졌는데, A는 8비트 전용, 나머지는 일부 명령어에서 BC, DE, HL처럼 16비트로 사용 가능했다. (주로 주소 저장)
8080 명령어는 대부분 1바이트로 표시되며, 추가 처리값, 메모리 주소, 포트 번호는 1~2바이트 데이터를 추가로 사용한다. 다중 레벨 프로시저 호출/반환을 위한 CALL/RET 명령어(조건부 실행 가능)와 기계 스택에 16비트 레지스터 쌍을 저장/복원하는 명령어도 지원한다. 서브루틴용 8개 1바이트 호출 명령어(00h, 08h, 10h, ..., 38h)도 있다.
- 명령어는 1~3 바이트의 가변 길이이다.
- 주요 명령어: 8비트 레지스터 간 로드, 8/16비트 레지스터 즉시 로드, A 레지스터 연산 (덧셈, 뺄셈, 비트 연산, 비교), 메모리 참조(HL 레지스터 포인터), 조건/무조건 점프, 콜, 리턴, 스택 PUSH/POP, 인터럽트 제어, 소프트웨어 인터럽트 등.
- 상대 점프/콜 명령어가 없어 명령어 재배치가 불가능했다.
- 리셋 시 0번지부터 실행, 스택 포인터는 주소 감소 방향으로 자동 감소 (스택은 메모리 상위 번지로 확장).
8080 명령어 목록:
- r: 8비트 레지스터 (A, B, C, D, E, H, L, M (HL 레지스터))
- rr: 16비트 레지스터 (BC, DE, HL, SP)
- n: 8비트 수치 (즉시 값 또는 I/O 주소)
- nn: 16비트 수치 (즉시 값 또는 메모리 주소)
- 인텔/자일로그 니모닉 상이점: 슬래시(/) 표기
데이터 전송:
- MOV r,r / LD r,r: 8비트 레지스터 간 전송 (MOV M,M 없음)
- MVI r,n / LD r,n: 8비트 레지스터 즉시 값 로드
- LXI rr,nn / LD rr,nn: 16비트 레지스터 즉시 값 로드
- LDA nn / LD a,(nn): 메모리 내용을 A 레지스터에 로드
- STA nn / LD (nn),A: A 레지스터 내용을 메모리에 저장
- LHLD nn / LD HL,(nn): 메모리 내용을 HL 레지스터에 로드
- SHLD nn / LD (nn),HL: HL 레지스터 내용을 메모리에 저장
- LDAX B / LD A,(BC): BC 레지스터 주소 내용을 A 레지스터에 로드
- LDAX D / LD A,(DE): DE 레지스터 주소 내용을 A 레지스터에 로드
- STAX B / LD (BC),A: A 레지스터 내용을 BC 레지스터 주소에 저장
- STAX D / LD (DE),A: A 레지스터 내용을 DE 레지스터 주소에 저장
- SPHL / LD SP,HL: HL 레지스터 내용을 SP 레지스터에 전송
- XCHG / EX DE,HL: DE와 HL 레지스터 내용 교환
산술 연산:
- ADD r / ADD A,r: A 레지스터에 8비트 레지스터 더함
- ADI n / ADD A,n: A 레지스터에 즉시 값 더함
- ADC r / ADC A,r: A 레지스터에 8비트 레지스터와 C 플래그 더함
- ACI n / ADC A,n: A 레지스터에 즉시 값과 C 플래그 더함
- SUB r: A 레지스터에서 8비트 레지스터 뺌 (Z80 16비트 SUB 없음)
- SUI n / SUB n: A 레지스터에서 즉시 값 뺌
- SBB r / SBC A,r: A 레지스터에서 8비트 레지스터와 C 플래그(보로우) 뺌
- SBI n / SBC A,n: A 레지스터에서 즉시 값과 C 플래그(보로우) 뺌
- CMP r / CP r: A 레지스터에서 8비트 레지스터 빼기 (결과 미저장)
- CPI n / CP n: A 레지스터에서 즉시 값 빼기 (결과 미저장)
- INR r / INC r: 8비트 레지스터 증가
- DCR r / DEC r: 8비트 레지스터 감소
- INX rr / INC rr: 16비트 레지스터 증가
- DCX rr / DEC rr: 16비트 레지스터 감소
- DAD rr / ADD HL,rr: HL 레지스터에 16비트 레지스터 더함
- DAA: A 레지스터 BCD 보정
논리 연산:
- ANA r / AND r: A 레지스터와 8비트 레지스터 논리곱
- ANI n / AND n: A 레지스터와 즉시 값 논리곱
- ORA r / OR r: A 레지스터와 8비트 레지스터 논리합
- ORI n / OR n: A 레지스터와 즉시 값 논리합
- XRA r / XOR r: A 레지스터와 8비트 레지스터 배타적 논리합
- XRI n / XOR n: A 레지스터와 즉시 값 배타적 논리합
- CMA / CPL: A 레지스터 반전 (보수)
- RLC / RLCA: A 레지스터 왼쪽 회전
- RRC / RRCA: A 레지스터 오른쪽 회전
- RAL / RLA: A 레지스터와 C 플래그 포함 왼쪽 회전
- RAR / RRA: A 레지스터와 C 플래그 포함 오른쪽 회전
점프 및 호출:
- JMP nn / JP nn: 지정 주소 점프
- JNZ nn / JP NZ,nn: Z=0이면 지정 주소 점프
- JZ nn / JP Z,nn: Z=1이면 지정 주소 점프
- JNC nn / JP NC,nn: C=0이면 지정 주소 점프
- JC nn / JP C,nn: C=1이면 지정 주소 점프
- JPO nn / JP PO,nn: P=0이면 지정 주소 점프
- JPE nn / JP PE,nn: P=1이면 지정 주소 점프
- JP nn / JP P,nn: S=0이면 지정 주소 점프
- JM nn / JP M,nn: S=1이면 지정 주소 점프
- PCHL / JP (HL): HL 레지스터 내용을 PC에 전송
- CALL nn: 지정 주소 호출
- CNZ nn / CALL NZ,nn: Z=0이면 지정 주소 호출
- CZ nn / CALL Z,nn: Z=1이면 지정 주소 호출
- CNC nn / CALL NC,nn: C=0이면 지정 주소 호출
- CC nn / CALL C,nn: C=1이면 지정 주소 호출
- CPO nn / CALL PO,nn: P=0이면 지정 주소 호출
- CPE nn / CALL PE,nn: P=1이면 지정 주소 호출
- CP nn / CALL P,nn: S=0이면 지정 주소 호출
- CM nn / CALL M,nn: S=1이면 지정 주소 호출
- RST p / RST n: p*8 주소 호출 (인터럽트용)
복귀:
- RET: 복귀
- RNZ / RET NZ: Z=0이면 복귀
- RZ / RET Z: Z=1이면 복귀
- RNC / RET NC: C=0이면 복귀
- RC / RET C: C=1이면 복귀
- RPO / RET PO: P=0이면 복귀
- RPE / RET PE: P=1이면 복귀
- RP / RET P: S=0이면 복귀
- RM / RET M: S=1이면 복귀
스택 연산:
- PUSH rr: 16비트 레지스터 스택 푸시 (SP 불가)
- PUSH PSW / PUSH AF: PSW 스택 푸시
- POP rr: 16비트 레지스터 스택 팝 (SP 불가)
- POP PSW / POP AF: PSW 스택 팝
- XTHL / EX (SP),HL: HL과 스택 탑 내용 교환
기타:
- NOP: 아무것도 안 함
- HLT / HALT: CPU 정지, 인터럽트 대기
- DI: 인터럽트 금지
- EI: 인터럽트 허용
3. 3. 입출력 방식
8080은 전용 입출력 명령어를 통해 포트 주소를 피연산자로 사용하여 최대 256개의 입출력(I/O) 포트를 지원한다.[19] 이러한 입출력 매핑 방식은 프로세서의 제한된 주소 공간을 확보한다는 장점으로 여겨진다.[20]많은 CPU 아키텍처는 RAM과 주변 장치 칩 모두에 공통 주소 공간을 사용하는 메모리 매핑 입출력(MMIO)을 사용한다. 이는 전용 입출력 명령어가 필요 없지만, 주변 장치가 메모리보다 느린 경우가 많아 대기 상태를 삽입하기 위해 특수 하드웨어를 사용해야 할 수 있다는 단점이 있을 수 있다. 그러나 일부 간단한 8080 컴퓨터에서는 입출력이 메모리 셀처럼 "메모리 매핑"되어 입출력 명령어를 사용하지 않는다. 입출력 주소 지정은 또한 프로세서가 동일한 8비트 포트 주소를 하위 및 상위 주소 바이트 모두에 출력한다는 사실을 이용하는 경우도 있다(예: `IN 05h`는 16비트 주소 버스에 0505h 주소를 놓는다).
유사한 입출력 포트 방식은 하위 호환 가능한 Zilog Z80 및 Intel 8085, 그리고 밀접하게 관련된 x86 마이크로프로세서 계열에서 사용된다.
8080의 입출력 명령어는 다음과 같다.
- `IN n` / `IN A,(n)`: I/O 주소에서 A 레지스터로 입력한다.
- `OUT n` / `OUT (n),A`: A 레지스터의 내용을 I/O 주소로 출력한다.
3. 4. 상태 레지스터 (플래그)
8080 프로세서는 연산 및 논리 명령어의 결과를 나타내는 내부 플래그 비트(상태 레지스터)를 유지하며, 특정 명령어만 플래그에 영향을 미친다. 플래그는 다음과 같다.- 부호 (S): 결과가 음수이면 설정된다.
- 영 (Z): 결과가 0이면 설정된다.
- 패리티 (P): 결과에서 1 비트의 개수가 짝수이면 설정된다.
- 캐리 (C): 마지막 덧셈 연산에서 자리올림이 발생했거나 마지막 뺄셈 연산에서 자리빌림이 필요한 경우 설정된다.
- 보조 캐리 (AC 또는 H): 2진 부호화 10진수(BCD) 연산에 사용된다.
캐리 비트는 특정 명령어에 의해 설정 또는 보완될 수 있다. 조건 분기 명령어는 다양한 플래그 상태 비트를 테스트한다. 누산기와 플래그는 함께 PSW (Program Status Word, 프로그램 상태 단어)라고 불리며, PSW는 스택으로 푸시하거나 스택에서 팝할 수 있다.
프로세서 상태 단어의 비트 중 하나는 프로세서가 스택에서 데이터에 접근하고 있음을 나타낸다. 이 신호를 사용하면 별도의 스택 메모리 공간을 구현할 수 있지만, 이 기능은 거의 사용되지 않는다.
; STC / SCF
: 캐리 플래그(C 플래그)를 1로 설정한다.
; CMC / CCF
: 캐리 플래그(C 플래그)를 반전한다.
4. 지원 칩
8080의 성공에 중요한 요소 중 하나는 직렬 통신, 카운터/타이밍, 입출력, 직접 메모리 액세스, 프로그래머블 인터럽트 제어 등 다양한 기능을 제공하는 광범위한 지원 칩이었다.[21][22]
칩 | 설명 |
---|---|
8214 | 우선 순위 인터럽트 제어 장치[21][22] |
8224 | 클럭 발생기 |
8228/8238 | 시스템 제어기 및 버스 드라이버 |
8251 | 통신 제어기 |
8253 | 프로그래머블 간격 타이머 |
8255 | 프로그래머블 주변 장치 인터페이스 |
8257 | DMA 제어기 |
8259 | 프로그래머블 인터럽트 제어기 |
5. 세컨드 소스 및 호환 제품
NEC에서 제작한 세컨드 소스 제품(μPD8080A)은 감산 시 10진 보정 플래그 처리가 오리지널과 달랐으며, 이 부분을 완전히 동일하게 만든 제품(μPD8080AF)이 추가로 판매되었다. TK-80에는 μPD8080A가, TK-80E에는 μPD8080AF가 채용되었다.[1]
6. 파생 제품 및 영향
8080은 MITS 알테어 8800, 프로세서 테크놀로지 SOL-20 터미널 컴퓨터, IMSAI 8080 마이크로컴퓨터 등 많은 초기 마이크로컴퓨터에 사용되었으며, CP/M 운영 체제를 실행하는 기계의 기반을 형성했다. 이후 거의 완벽하게 호환되고 성능이 더 뛰어난 ZILOG Z80 프로세서가 이를 기반으로 성장하여, Z80과 CP/M은 1976년경부터 1983년까지 당시의 주요 CPU와 OS 조합이 되었고, 이는 10년 후 PC의 x86과 DOS의 성공과 유사하다.[24]
1979년, Z80 및 8085 프로세서가 출시된 후에도 8080을 생산하는 5개 제조업체가 개당 3USD~4USD의 가격으로 한 달에 약 50만 개의 제품을 판매한 것으로 추산된다.[24]
단일 보드 마이크로컴퓨터인 MYCRO-1과 ''dyna-micro''/MMD-1 (단일 보드 컴퓨터 참조) 등은 Intel 8080을 기반으로 했다. 8080의 초기 사용 사례 중 하나는 1970년대 후반 캘리포니아주 샌디에이고에 있는 Cubic-Western Data에서 전 세계 대중교통 시스템을 위해 맞춤 설계된 자동 요금징수 시스템에 사용된 것이다. 8080의 초기 산업적 용도는 대량의 사용자 데이터를 릴투릴 테이프에서 가져와 마이크로피시에 이미지화하는 DatagraphiX Auto-COM(컴퓨터 출력 마이크로피시) 제품군의 "두뇌"로 사용된 것이다. Auto-COM 장비에는 자동 필름 절단, 처리, 세척 및 건조 하위 시스템도 포함되어 있다.
초기 비디오 아케이드 게임 여러 개가 8080 마이크로프로세서를 기반으로 제작되었다. 마이크로프로세서를 통합한 최초의 상용 아케이드 비디오 게임은 1975년 11월에 출시된 Taito의 개별 논리 ''웨스턴 건''을 재구현한 Midway Games의 8080 기반 ''건 파이트''였다.[25][26][27][28] 그런 다음 8080은 후속 Midway 아케이드 비디오 게임[31]과 가장 성공적이고 잘 알려진 아케이드 비디오 게임 중 하나인 Taito의 1978년 ''스페이스 인베이더''에 사용되었다.[32][33]
ZILOG는 호환 가능한 기계어 명령어 집합을 가지고 있으며 처음에는 8080과 동일한 어셈블리어를 사용했지만, 법적 이유로 Zilog는 Z80에 대해 구문상으로 다르지만 코드 호환성이 있는 대체 어셈블리어를 개발했다. Intel에서는 8080에 호환되고 전기적으로 더 우아한 8085가 뒤따랐다.
나중에 Intel은 어셈블리어 호환(하지만 바이너리 호환은 아님) 16비트 8086을 출시한 다음 1981년에 출시될 새로운 PC를 위해 IBM이 선택한 8/16비트 8088을 출시했다. 후에 NEC는 Intel 80186 명령어 집합 호환성을 갖춘 8088 클론인 NEC V20(8080 에뮬레이션 모드도 지원)을 만들었다. 이는 NEC의 V30(유사하게 향상된 8086 클론)에서도 지원된다. 따라서 8080은 명령어 집합 아키텍처(ISA)를 통해 컴퓨터 역사에 지속적인 영향을 미쳤다.
동구권에서는 Intel 8080A와 호환되는 여러 프로세서가 제조되었다. 소련의 KR580VM80A(처음에는 КР580ИК80으로 표시됨), 폴란드 Unitra CEMI에서 제작한 MCY7880,[34] 체코슬로바키아 TESLA에서 제작한 MHB8080A,[35] 헝가리 텅스람/MEV에서 제작한 8080APC,[35] 그리고 루마니아 Microelectronica Bucharest에서 제작한 MMN8080[35]이다.
2017년 기준으로 8080은 Lansdale Semiconductors에서 여전히 생산 중이다.[36]
다음은 인텔 8080의 2차 공급원(second source) 목록이다.
제조사 | 제품명 | 비고 |
---|---|---|
AMD | AMD Am9080 | |
CEMI | MCY7880 | 폴란드 |
Kvazar | K580IK80 | 우크라이나 SSR |
미쓰비시전기 | M5L8080 | |
내셔널 세미컨덕터 | INS8080 | |
NEC | NEC μPD8080AF | |
OKI | MSM8080 | |
지멘스 | SAB8080 | |
시그네틱스 | MP8080 | |
Tesla | MHB8080 | |
텍사스 인스트루먼츠 | TMS8080 | |
(불명) | 5G8080 | 중국 |
8080은 컴퓨터 제작 방식에도 변화를 가져왔다. 8080이 출시될 당시 컴퓨터 시스템은 주로 디지털 이큅먼트 코퍼레이션(DEC), 휴렛 팩커드(HP), 또는 IBM과 같은 컴퓨터 제조업체에서 제작했다. 제조업체는 프로세서, 단말기, 컴파일러 및 운영 체제와 같은 시스템 소프트웨어를 포함한 전체 컴퓨터를 생산했다. 그러나 8080은 완벽한 컴퓨터 시스템을 제외한 거의 모든 애플리케이션을 위해 설계되었다. 휴렛 팩커드는 8080을 기반으로 HP 2640 시리즈의 스마트 단말기를 개발했다. HP 2647은 8080에서 베이직(BASIC) 프로그래밍 언어를 실행하는 단말기이다. 마이크로소프트의 창립 제품인 Microsoft BASIC은 원래 8080용으로 프로그래밍되었다.
8080과 8085는 소스 코드 호환되지만 바이너리 호환되지는 않는 8080의 확장판으로 설계된 8086을 탄생시켰다.[37] 이 설계는 후에 인텔의 주요 프로세서 라인으로 계속 이어지는 x86 계열 칩을 만들어냈다. 8080의 핵심 기계 명령어와 개념 중 많은 부분이 널리 사용되는 x86 플랫폼에 남아 있다. 예를 들어, ''A'', ''B'', ''C'', ''D''로 명명된 레지스터와 조건부 점프를 제어하는 데 사용되는 많은 플래그가 있다.
닌텐도의 게임보이에 탑재된 커스텀 프로세서 LR35902[46]는 이 프로세서와 비슷한 사양을 가지고 있다. 이 프로세서는 커스텀 Z80이라고도 표기되지만, Z80에서 확장된 보조 레지스터나 처리에 시간이 걸리는 인덱스 레지스터 등의 명령어가 삭제되었기 때문에, 명령어 세트는 i8080에 가까운 사양이다.
7. 소프트웨어
디지털 리서치(Digital Research)의 CP/M(CP/M-80)이 유명하다.
8. 문화적 영향
- 소행성 8080 인텔은 인텔 8080의 이름을 빗댄 말장난이자 찬사로 명명되었다.[38]
- 마이크로소프트의 발표된 전화번호 425-882-8080은 초기 작업의 상당 부분이 이 칩에 기반했기 때문에 선택되었다.
- 인텔의 주요 전화번호 중 상당수도 xxx-xxx-8080과 유사한 형식을 취한다.
참조
[1]
웹사이트
CPU History – The CPU Museum – Life Cycle of the CPU
http://www.cpushack.[...]
[2]
간행물
The Intel386 Architecture Here to Stay
Intel Corporation, Microcomputer Solutions
1989-07-01
[3]
뉴스
From CPU to software, the 8080 Microcomputer is here
Fairchild Publications
1974-04-15
[4]
문서
The 8008 (1972) was used for interpolation and control in ASEA's (now ABB) first line of general industrial robots, introduced October 1973.
[5]
서적
Upgrading and Repairing PCs
https://www.informit[...]
Pearson Education
2021-11-16
[6]
문서
The enhancements were largely based on customer feedback and Federico Faggin and others listening to minicomputer-oriented professionals about certain problems and lack of features in the 8008 architecture. (Source: 8008 and 8080 oral histories.)
[7]
논문
The Intel 8086 Microprocessor: a 16-bit Evolution of the 8080
https://ieeexplore.i[...]
2021-11-18
[8]
웹사이트
8080A/8080A-1/8080A-2 8-Bit N Channel Microprocessor
http://www.elektroni[...]
Intel
2021-11-16
[9]
문서
similar to pull-up resistors
[10]
서적
Switching Mode Circuit Analysis and Design: Innovative Methodology by Novel Solitary Electromagnetic Wave Theory
https://books.google[...]
Bentham Science Publishers
2020-11-28
[11]
웹사이트
Creating the 8080: The Processor That Started the PC Revolution
Zaff Davis
2021-11-14
[12]
웹사이트
8008 and 8080 Q&A
2021-11-15
[13]
논문
Intel 8080 CPU Chip Development
2007-04-01
[14]
논문
座談会 マイクロコンピュータの誕生 開発者 嶋 正利氏に聞く
共立出版
1979-01-01
[15]
잡지
High-level language simplifies microcomputer programming
https://www.retrotec[...]
McGraw-Hill Education
2021-11-14
[16]
간행물
8080 Simulator INTERP/80
https://mark-ogden.u[...]
Intel Corporation
2023-11-25
[17]
서적
8080 Assembly Language Programming Manual
https://archive.org/[...]
Intel
2024-02-29
[18]
웹사이트
8080 instruction encoding
http://www.classiccm[...]
2011-10-23
[19]
문서
Note: Some Intel datasheets from the 1970s advertise 512 I/O ports, because they count input and output ports separately.
[20]
서적
Computer Architecture and Organization
McGraw-Hill
1978-01-01
[21]
간행물
8214 Priorty Interrupt Control Unit
http://www.bitsavers[...]
Intel Corporation
1975-09-01
[22]
간행물
Two Low-Cost, Programmable LSI Device Make Designs Easier To Implement, Reduce Cost Of 4-bit MCS-40 Systems
Intel Corporation
1976-01-01
[23]
웹사이트
Intel Chips timeline
https://www.intel.co[...]
Intel Corporation
2021-11-14
[24]
잡지
Byte News
1979-11-01
[25]
웹사이트
What was the first arcade game to use a microprocessor instead of discrete logic?
https://retrocomputi[...]
2023-04-11
[26]
서적
The ultimate history of video games: from Pong to Pokémon and beyond : the story behind the craze that touched our lives and changed the world
Prima
2001-01-01
[27]
서적
アーケードTVゲームリスト国内•海外編(1971–2005)
https://archive.org/[...]
Amusement News Agency
2006-10-13
[28]
웹사이트
Dave Needle and Jerry Lawson - Two Early Independent Video Game Designers
http://allincolorfor[...]
2023-04-11
[29]
웹사이트
Internet Pinball Machine Database: Mirco Games, Inc. 'Spirit of 76'
http://www.ipdb.org/[...]
2023-04-11
[30]
웹사이트
Mirco Spirit of 76 for sale – THE first solid state pin?
https://pinside.com/[...]
2023-04-11
[31]
웹사이트
Midway 8080 System Boards
https://arcarc.xmiss[...]
2023-04-11
[32]
웹사이트
Space Invaders Videogame by Bally Midway (1978)
http://www.klov.com/[...]
Killer List of Videogames
2023-04-11
[33]
웹사이트
Ten Things Everyone Should Know About Space Invaders
http://www.1up.com/d[...]
2023-04-11
[34]
웹사이트
MCY7880—a Polish-made clone of 8080
http://www.cpu-world[...]
2011-10-23
[35]
웹사이트
Soviet chips and their western analogs
http://www.cpu-world[...]
2011-10-23
[36]
웹사이트
Intel – Microprocessor 8080A Family & 828X Series
http://lansdale.com/[...]
Lansdale Semiconductor Inc.
2017-06-20
[37]
논문
Intel Microprocessors: 8008 to 8086
https://stevemorse.o[...]
1980-10-01
[38]
웹사이트
(8080) Intel = 1958 QC = 1987 WU2 = 1989 AS5
https://minorplanetc[...]
International Astronomical Union
2021-11-14
[39]
논문
海外技術動向―8ビット並列処理ワンチップCPU
工業調査会
[40]
웹사이트
応用が時代を切り拓く技術を生む~久多良木SCE社長のISSCC基調講演に思う
https://xtech.nikkei[...]
2006-03-01
[41]
웹사이트
Creating the 8080: The Processor That Started the PC Revolution
https://www.pcmag.co[...]
Zaff Davis
2021-11-14
[42]
웹사이트
8008 and 8080 Q&A
https://sites.google[...]
2021-11-15
[43]
간행물
座談会 マイクロコンピュータの誕生 開発者 嶋 正利氏に聞く
共立出版
1979
[44]
서적
椎名尭慶のマイコンウォーズ : ソードに賭ける男たち
プレジデント社
[45]
논문
工業調査会
[46]
서적
Nintendo Gameboy Architecture
http://meseec.ce.rit[...]
2021-05-14
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
[반알못을 부탁해] 컴퓨터의 두뇌를 둘러싼 인텔과 AMD의 격전 – 바이라인네트워크
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com